package VO;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;

import juani.Item;

import org.w3c.dom.Document;
import org.xml.sax.SAXException;
import com.thoughtworks.xstream.XStream;
import entity.CondicionCompraEntity;
import entity.FacturaEntity;
import entity.ItemEntity;

public class ConstruirFactura {
private FacturaEntity factura;
	
	public ConstruirFactura(FacturaEntity fac){
		this.factura=fac;
	}
	public Document generarXML() throws ParserConfigurationException, SAXException{
		XStream x = new XStream();
		
		x.processAnnotations(FacturaVO.class);
		
		FacturaVO fa = new FacturaVO();
		Date fecha=factura.getFecha();
		fa.setFecha(fecha.getDate()+"/"+fecha.getMonth()+"/"+fecha.getYear());
		fa.setDescuento(factura.getDescuento());
		fa.setFormaPago(factura.getFormaDePago());
		fa.setIva(factura.getIva());
		fa.setSubtotal(factura.getTotal());
		fa.setNumero(factura.getNumero());
		
		ClienteVO cliente=new ClienteVO();
		cliente.setCuil(factura.getCliente().getCuit());
		cliente.setRazonsocal(factura.getCliente().getNombre());
		fa.setCliente(cliente);
		
		List<ItemEntity> itemsRods=factura.getItems();
		Rodamientos ro=new Rodamientos();
		List<ItemVO> item=new ArrayList<ItemVO>();
		for(int i=0;i<itemsRods.size();i++){
			ItemEntity its=itemsRods.get(i);
			ItemVO itss=new ItemVO();
			itss.setCantidad(its.getCantidad());
			itss.setMarca(its.getRodamiento().getMarca());
			itss.setOrigen(its.getRodamiento().getOrigen());
			itss.setSerie(its.getRodamiento().getCodigo());
			itss.setSufijo(its.getRodamiento().getNombre());
			itss.setPrecio(its.getPrecio());
			item.add(itss);
		}
		ro.setItem(item);
		fa.setRodamientos(ro);
		
		String xml = x.toXML(fa);
		BufferedWriter out = null;
		try {
			out = new BufferedWriter(new FileWriter("Factura.xml"));
			out.write(xml);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
		    try {
				out.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return null;

	}

	
	

}
